package com.nari.kmd_dataservice.mapper;


import com.nari.kmd_dataservice.pojo.dto.responseCons.ResponseConsListDataDto;
import com.nari.kmd_dataservice.pojo.entity.*;
import com.nari.kmd_dataservice.pojo.request.reportResource.ReportResourceListDataRequest;
import com.nari.kmd_dataservice.pojo.request.targetResponse.TargerResponseRequest;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName: ServerMapper
 * @Description:
 * @Author: zhangnaijiang
 * @Date: 2022/01/25 19:01
 * @Version 1.0.0
 */
public interface ServerMapper {

    /*
     * 根据用户账号查询用户
     */
    User selectUser(@Param("userName")String userName, @Param("password")String password);
    /*
     * 根据注册ID查询用户
     */
    User selectUserByID(@Param("registRationId")String registRationId);

    /*
     * 更新用户
     */
    void updateUser(User userName);

    /*
     * 查询负荷聚合平台用户
     */
    List<LaUser> selectLaUserList();
    /*
     * 根据需求响应平台从聚合平台获取的注册ID查询负荷聚合平台用户
     */
    LaUser selectLaUserByID(@Param("registRationId")String registRationId);
    /*
     * 根据账号查询负荷聚合平台用户
     */
    LaUser selectLaUserByUserName(@Param("userName")String userName);
    /*
     * 根据聚合平台从需求响应平台获取的注册ID查询负荷聚合平台用户
     */
    LaUser selectLaUserByLaID(@Param("laRegistRationId")String laRegistRationId);
    /*
     * 更新负荷聚合平台用户
     */
    void updateLaUser(LaUser laUser);

    /*
     * 检查可响应负荷用户存在的户号
     */
    List<String>  checkExistRespondConsList(@Param("registRationId")String registRationId, @Param("consNoList")List<String> consNoList);

    void updateRespondConsListPass(@Param("registRationId")String registRationId, @Param("list")List<ReportResourceListDataRequest> updateList, @Param("updateStat")String updateStat);
    void updateRespondConsNoListPass(@Param("registRationId")String registRationId, @Param("consNoList")List<String> updateList);

    /*
     * 增加可响应负荷用户
     */
    void addRespondConsList(@Param("registRationId")String registRationId, @Param("list")List<ReportResourceListDataRequest> addList, @Param("consStatus")String consStatus);
    /*
     * 删除可响应负荷用户
     */
    void deleteRespondConsList(@Param("registRationId")String registRationId, @Param("list")List<ReportResourceListDataRequest> deleteList);

    /*
     * 负荷聚合平台获取可响应用户信息
     */
    List<ResponseConsListDataDto> selectResponseConsList(@Param("registRationId")String registRationId);

    /*
     * 负荷聚合平台获取响应用户信息
     */
    List<ResponseCons> getResponseConsList(@Param("registRationId")String registRationId, @Param("list")List<String> consNoParaList);
    /*
     * 根据户号查询存在的户号
     */
    List<String> getConsNoListFromCons(@Param("list") List<String> consNoList);

    void addConsNoListToCons(@Param("list")List<String> consNoAddList);

    Integer addResponseEvent(@Param("responseEvent") ResponseEvent responseEvent);
    /*
     * 获取未发布成功需求响应事件
     */
    List<ResponseEvent> getNotPublishResponseEventList();
    /*
     * 获取需求响应事件
     */
    ResponseEvent getResponseEventByEventID(@Param("eventId")String eventId);
    /*
     * 新增需求响应事件的范围
     */
    void addResponseEventRangeList(@Param("responseEventRangeList") List<ResponseEventRange> responseEventRangeList);
    /*
     * 获取需求响应事件的范围的户号
     */
    List<String> getResponseEventRangeConsNoList(@Param("laRegistRationId")String laRegistRationId, @Param("eventId")String eventId);
    /*
     * 获取需求响应事件的范围
     */
    List<ResponseEventRange> getResponseEventRangeList(@Param("laRegistRationId")String laRegistRationId, @Param("eventId")String eventId);

    /*
     * 获取未发布成功需求响应事件的范围
     */
    List<ResponseEventRange> getNotPublishResponseEventRangeListByEventID(@Param("eventId")String eventId);

    /*
     * 获取未发布成功需求响应事件的范围数量
     */
    int getNotPublishResponseEventRangeCount(@Param("eventId")String eventId);

    /*
     * 获取一条发布成功需求响应事件的范围
     */
    ResponseEventRange getOnePublishResponseEventRangeByLaID(@Param("laRegistRationId")String laRegistRationId);

    /*
     * 更新发布成功的需求响应事件范围
     */
    void updateSuccessResponseEventRangeList(@Param("request") TargerResponseRequest targerResponseRequest, @Param("laRegistRationId")  String laRegistRationId);
    /*
     * 更新发布失败的需求响应事件范围
     */
    void updateFailResponseEventRangeList(@Param("request")TargerResponseRequest targerResponseRequest, @Param("laRegistRationId")  String laRegistRationId);

    /*
     * 更新发布成功的需求响应事件
     */
    void updateSuccessResponseEvent(@Param("eventId")String eventId);

    /*
     * 更新到期结束的发布的需求响应事件
     */
    void updatePublishResponseEventEnd();

    /*
     * 查询设备信息
     */
    List<DeviceInfo> getDeviceInfoList(@Param("list") List<String> consNoList);
    /*
     * 删除设备信息
     */
    void deleteDeviceInfoList(@Param("list") List<DeviceInfo> deviceInfoListDele);
    /*
     * 增加更新设备信息
     */
    void addDeviceInfoList(@Param("list") List<DeviceInfo> deviceInfoList);
}
